template <typename T>
const T & mymax(const T & a, const T & b){
    return max(a, b);
}

template<typename T, typename ... Args>
const T & mymax(const T & t, const Args & ... args){
    return max(t, mymax(args ...));
}



template <typename T>
const T & mymin(const T & a, const T & b){
    return min(a, b);
}

template<typename T, typename ... Args>
const T & mymin(const T & t, const Args & ... args){
    return min(t, mymin(args ...));
}

